package main

import (
	"flag"
	"fmt"
	"time"
)

func main() {
	//定义命令行参数方式1
	var name string
	var age int
	var married bool
	var delay time.Duration
	flag.StringVar(&name, "name", "张三", "姓名")
	flag.IntVar(&age, "age", 18, "年龄")
	flag.BoolVar(&married, "married", false, "婚否")
	flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

	//解析命令行参数
	flag.Parse()
	fmt.Println(name, age, married, delay)
	//返回命令行参数后的其他参数
	fmt.Println(flag.Args())
	//返回命令行参数后的其他参数个数
	fmt.Println(flag.NArg())
	//返回使用的命令行参数个数
	fmt.Println(flag.NFlag())
}

// cmd运行结果如下
/*bytedance@MacBook-Pro flag_demo % go run flag_demo.go
张三 18 false 0s
[]
0
0
bytedance@MacBook-Pro flag_demo % flag_demo -h
zsh: command not found: flag_demo
bytedance@MacBook-Pro flag_demo % ./flag_demo -h
Usage of ./flag_demo:
-age int
年龄 (default 18)
-d duration
延迟的时间间隔
-married
婚否
-name string
姓名 (default "张三")
bytedance@MacBook-Pro flag_demo % ./flag_demo -name 测试
测试 18 false 0s
[]
0
1
bytedance@MacBook-Pro flag_demo % ./flag_demo -name 测试 -age 50
测试 50 false 0s
[]
0
2
bytedance@MacBook-Pro flag_demo % ./flag_demo -name 测试 --age 50
测试 50 false 0s
[]
0
*/
